package com.lazily.set_;


/**
 * @Author:  GZQ
 * @date:  2025/5/6 18:30
 * @description: 数组 + 链表 模拟 HashMap 底层结构
 * @version: 1.0
 */

@SuppressWarnings({"all"})
public class HashSetStructure {
	// 程序入口
	public static void main(String[] args) {
		// 模拟一个 HashSet 的底层 (HashMap 的底层结构)

		// 1. 创建一个数组, 数组的类型是 Node[]
		// 2. 有的人, 直接把 Node[] 数组称为 表
		Node[] table = new Node[16];
		System.out.println("table = " + table);
		// 3. 创建结点
		Node john = new Node("john", null);

		table[2] = john;
		Node jack = new Node("jack", null);
		john.next = jack; // 将jack 结点挂载到john
		Node rose = new Node("Rose", null);
		jack.next = rose; // 将rose 结点挂载到jack

		Node lucky = new Node("lucky", null);
		table[3] = lucky; // 把lucky 放到 table表的索引为3的位置,
		System.out.println("table = " + table);

	}
}

class Node { //结点, 存储数据, 可以指向下一个结点, 从而形成链表
	Object item; // 存放数据
	Node next; // 指向下一个结点

	public Node(Object item, Node next) {
		this.item = item;
		this.next = next;
	}

}
